package yunjiao.javatutorials.mq.model;

import lombok.Builder;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.UUID;

/**
 * 统一MQ消息体（公共字段+泛型业务数据）
 *
 * @author yangyunjiao
 */
@Data
@Builder
public class GenericMqMessage<T> {
    /** 消息唯一ID（追踪用） */
    private String messageId;
    /** 发送时间（自动填充） */
    private LocalDateTime sendTime;
    /** 消息主题（对应MqTopicEnum） */
    private String topic;
    /** 业务类型（如USER/ORDER/PRODUCT） */
    private String businessType;
    /** 业务数据（泛型适配多表） */
    private T businessData;

    public static <T> GenericMqMessage<T> create(String topic, String businessType, T businessData) {
        return GenericMqMessage.<T>builder()
                .messageId(UUID.randomUUID().toString().replace("-", ""))
                .sendTime(LocalDateTime.now())
                .topic(topic)
                .businessType(businessType)
                .businessData(businessData)
                .build();
    }
}
